package services.common;

import models.common.entity.t_concern;
import services.base.BaseService;

import common.utils.Factory;
import common.utils.LoggerUtil;
import common.utils.ResultInfo;

import daos.common.ConcernDao;

/**
 * 关注表service
 *
 * @description 
 *
 * @author zhiliang.lan
 * 
 * @createDate 2017年5月31日09:09:15
 */
public class ConcernService extends BaseService<t_concern> {
	
	protected ConcernDao concernDao = null;
	
	protected ConcernService() {
		this.concernDao = Factory.getDao(ConcernDao.class);
		
		super.basedao = this.concernDao;
	}

	/**
	 * 新增关注
	 * @param concern
	 * @return
	 * @author zhiliang.lan
	 * @createDate 2017年5月31日
	 */
	public ResultInfo addConcern(t_concern concern) {
		ResultInfo result = new ResultInfo();
		
		boolean flag = concernDao.save(concern);
		if (!flag) {
			result.code = ResultInfo.ERROR_SQL;
			result.msg = "系统错误";	
			return result;
		} 
		
		result.code = 1;
		result.msg="关注成功!";
		result.obj = concern;
		
		return result;
	}

	/**
	 * 根据用户和企业id查找关注记录
	 * @param userId
	 * @param companyId
	 * @return
	 * @author zhiliang.lan
	 * @createDate 2017年5月31日
	 */
	public t_concern findConcernByUserIdAndCompanyId(long userId, long companyId) {

		return concernDao.findConcernByUserIdAndCompanyId(userId, companyId);
	}

	/**
	 * 删除关注，即取消关注
	 * @param concern
	 * @return
	 * @author zhiliang.lan
	 * @createDate 2017年5月31日
	 */
	public ResultInfo delConcern(t_concern concern) {
		ResultInfo result = new ResultInfo();
		
		int flag = concernDao.delete(concern.id);
		if (flag < 1) {
			
			result.code = ResultInfo.ERROR_SQL;
			result.msg = "系统错误";	
			
			return result;
		} 
		
		result.code = 1;
		result.msg="取消关注成功!";
		result.obj = concern;
		
		return result;
	}

	/**
	 * 查找关注的记录
	 * @param userId
	 * @param user_id
	 * @return
	 * @author zhiliang.lan
	 * @createDate 2017年7月27日
	 */
	public t_concern findByUserIdAndConcernEdUserId(long userId, long concernedUserId) {
		
		return concernDao.findByUserIdAndConcernEdUserId(userId, concernedUserId);
	}

	/**
	 * 更新关注表数据
	 * @param concern
	 * @return
	 * @author zhiliang.lan
	 * @createDate 2017年7月27日
	 */
	public ResultInfo updateConcern(t_concern concern) {
		ResultInfo result = new ResultInfo();
		
		boolean flag = concernDao.save(concern);
		if (!flag) {
			
			result.code = ResultInfo.ERROR_SQL;
			result.msg = "系统错误";	
			LoggerUtil.error(true, "关注失败");
			return result;
		} 
		
		result.code = 1;
		result.msg="取消关注成功!";
		result.obj = concern;
		
		return result;
	}

	/**
	 * 关注企业   -app
	 * 
	 * @param userId
	 * @param companyUserId
	 * @return
	 * @author zhiliang.lan
	 * @createDate 2017年8月1日
	 */
	/*public String concernCompanyApp(long userId, long companyUserId) {
		
		JSONObject json = new JSONObject();
		ResultInfo result = new ResultInfo();
		
		t_concern concern = findByUserIdAndConcernEdUserId(userId, companyUserId);
		if(null == concern){
			concern = new t_concern();
			concern.user_id = userId;
			concern.concerned_user_id = companyUserId;
			concern.concern_status = 0;
		}
		//已关注的不能再关注
		if(concern.concern_status == 1){
			json.put("code", -1);
			json.put("msg", "已关注，关注失败");
			return json.toString();
		}else {
			concern.concern_status = 1;
		}
		
		result = updateConcern(concern);
		if(result.code < 1){
			json.put("code", -1);
			json.put("msg", "关注失败");
			return json.toString();
		}
		json.put("code", result.code);
		json.put("msg", "关注成功");
		
		return json.toString();
	}

	*//**
	 * 平台企业取消关注   -app
	 * @param userId
	 * @param companyUserId
	 * @return
	 * @author zhiliang.lan
	 * @createDate 2017年8月1日
	 *//*
	public String cancelConcernCompanyApp(long userId, long companyUserId) {
		JSONObject json = new JSONObject();
		ResultInfo result = new ResultInfo();
		
		t_concern concern = findByUserIdAndConcernEdUserId(userId, companyUserId);
		if(null == concern){
			concern = new t_concern();
			concern.user_id = userId;
			concern.concerned_user_id = companyUserId;
		}
		//已未关注的不能取消关注
		if(concern.concern_status == 0){
			json.put("code", -1);
			json.put("msg", "未关注，取消关注失败");
			return json.toString();
		}else {
			concern.concern_status = 0;
		}
		
		result = updateConcern(concern);
		if(result.code < 1){
			json.put("code", -1);
			json.put("msg", "取消关注失败");
			return json.toString();
		}
		json.put("code", result.code);
		json.put("msg", "取消关注成功");
		
		return json.toString();
	}*/
	
}
